# 汉诺塔
def hanoi_tower(n, a, b, c):
    """
    汉诺塔问题的递归解决方案。

    该函数通过递归方式解决汉诺塔问题，演示如何将n个盘子从杆a移动到杆c，使用杆b作为辅助。

    参数:
    n (int): 盘子的数量。
    a (str): 起始杆的名称。
    b (str): 辅助杆的名称。
    c (str): 目标杆的名称。

    返回:
    无返回值，但会打印出移动步骤。
    """
    # 当只有一个盘子时，直接从起始杆移动到目标杆
    if n == 1:
        print(a, '-->', c)
    else:
        # 将n-1个盘子从起始杆移动到辅助杆，目的是为最终将最大的盘子移动到目标杆让路
        # 把 a上的盘子移动到b 中间借助c
        hanoi_tower(n - 1, a, c, b)
        # 移动最大的盘子从起始杆到目标杆
        print(a, '-->', c)
        # 将n-1个盘子从辅助杆移动到目标杆，完成所有盘子的移动
        # 把 b上的盘子移动到c 中间借助a
        hanoi_tower(n - 1, b, a, c)


hanoi_tower(3, 'A', 'B', 'C')